2019 Novel Coronavirus COVID-19 (2019-nCoV) Data Repository by Johns Hopkins CSSE 를 통하여 존스홉킨스 대학교에서 공개한 데이터셋으로 많은 데이터사이언티스트들의 코로나 바이러스에 대한 과학적 연구를 장려하기 위하여 공개되었음. 데이터는 WHO는 물론, 전 세계의 질병관리본부(CDC)에서 수집한 정보를 포함하고 있음.
코로나 바이러스에 대한 간단한 탐색적자료분석 결과와 시각화 작업을 통하여 재미있는 요소를 확인하고자 함은 물론 위험성에 대하여 인식을 고도화함.
raw 데이터는 확진환자, 사망환자, 그리고 완치환자로 총 3개의 데이터셋으로 구성되며, 그 예시중 확진환자 데이터셋은 다음과 같이 각 국가별로 수집된 환자수에 대한 정보를 담고 있음.
| Province/State | Country/Region | Lat | Long | 1/22/20 | ~ | 3/23/20 |
|---|---|---|---|---|---|---|
| NA | Thailand | 15 | 101 | 2 | … | 599 |
| NA | Japan | 36 | 138 | 2 | … | 1086 |
| NA | Singapore | 1.283 | 103.8 | 0 | … | 455 |
| NA | Nepal | 28.17 | 84.25 | 0 | … | 2 |
| NA | Malaysia | 2.5 | 112.5 | 0 | … | 1306 |
| British Columbia | Canada | 49.28 | -123.1 | 0 | … | 424 |
열이름 재정의
| country | continent | date | confirmed | recovered | death |
|---|---|---|---|---|---|
| Afghanistan | Asia | 1/22/20 | 0 | 0 | 0 |
| Afghanistan | Asia | 1/23/20 | 0 | 0 | 0 |
| Afghanistan | Asia | 1/24/20 | 0 | 0 | 0 |
| Afghanistan | Asia | 1/25/20 | 0 | 0 | 0 |
| Afghanistan | Asia | 1/26/20 | 0 | 0 | 0 |
| Afghanistan | Asia | 1/27/20 | 0 | 0 | 0 |
주어진 데이터를 통하여 구축한 자료구조는 위와 같으며, 자료 내 관측치 중 결측값은 없음.
아프리카, 아메리카, 아시아, 유럽, 오세아니아
코로나 활동 환자 수 : active = confirmed - recovered - deaths
아시아가 발병근원지인 코로나 바이러스는 아시아, 유럽 이외 순으로 코로나 활동 환자 수가 많음.
| continent | sum_count | country_nth | mean_count |
|---|---|---|---|
| Africa | 7680 | 47 | 163.4 |
| Americas | 156751 | 38.98 | 4021 |
| Asia | 2046708 | 43 | 47598 |
| Europe | 1102470 | 46 | 23967 |
| Oceania | 8174 | 5 | 1635 |
대륙별 코로나 환자수는 아시아가 압도적으로 많으며, 그 다음으로 유럽이 많음. 아시아의 경우, 점차적으로 완치환자가 증가하며, 활동환자는 줄어드는 추세를 보여 코로나 바이러스가 수그러드는 듯이 보이나, 이외의 대륙은 코로나 바이러스가 현재진행중임.
| country | type | 합계 |
|---|---|---|
| Italy | active | 46638 |
| USA | active | 32855 |
| Germany | active | 24513 |
| Spain | active | 24421 |
| France | active | 13170 |
| Iran | active | 12022 |
| Switzerland | active | 7016 |
| South Korea | active | 5884 |
| United Kingdom | active | 5392 |
| China | active | 5351 |
중국은 현재, 활동 환자수가 10000명 이하로 떨어져 코로나가 끝났다고 말하고 있으며, 한국과 일본 또한 점차 활동 환자수가 감소하고 있는 추세를 띄고 있다. 하지만 유럽 지역은 대부분 늦게 전파된 바이러스로 인하여 급속도로 환자수가 증가하고 있다.
앞서 확인한 가장 영향력이 심한 상위 10개국의 코로나 환자의 치사율. 즉, 사망률을 확인해보았음.
프랑스와 이탈리아 그리고 미국은 상대적으로 높은 사망률을 보이고 있음. 안타까운 사실로, 대부분의 국가에서 점차 사망률이 증가하는 것이 관측되고 있음.
주황색 : 국가별 covid-19 확진자 수
빨간색 : 국가별 사망한 환자 수
초록색 : 국가별 완치한 환자 수
그림을 보면, 아시아 지역은 완치한 환자들의 수가 많아 시각적으로 두드러지게 표현되지만, 좌측에 보이는 유럽지역은 완치한 환자수가 적고, 확진자와 사망자 수가 시각적으로 표현된 것을 확인할 수 있음.
중국 우한을 시작으로 퍼지게 된 코로나바이러스는 시간이 흐름에 따라 유럽, 전미 지역으로 퍼지는 것을 확인하였음.
마인즈랩, ‘코로나19 동선 추적 데이터셋’ 를 통하여 마인즈 랩에서 공개한 국내 코로나 19 동선 추적 데이터셋으로 과학적 연구 진행이 가능함.
국내 코로나 바이러스 환자에 대하여 진행한 간단한 탐색적자료분석 결과와 동선 추적 데이터셋을 통하여 과학적으로 재미있는 요소를 확인하고자 함. 공개된 데이터셋은 환자정보에 대한 데이터셋과 이동경로 데이터셋으로 구분된다.
## # A tibble: 7,754 x 18
## global_id local_id sex birth_year country province disease group
## <dbl> <lgl> <chr> <dbl> <chr> <chr> <dbl> <chr>
## 1 1 NA fema… 1984 China filtere… NA <NA>
## 2 2 NA male 1964 Korea filtere… NA <NA>
## 3 3 NA male 1966 Korea capital… NA <NA>
## 4 4 NA male 1964 Korea capital… NA <NA>
## 5 5 NA male 1987 Korea capital… NA <NA>
## 6 6 NA male 1964 Korea capital… NA <NA>
## 7 7 NA male 1991 Korea capital… NA <NA>
## 8 8 NA fema… 1957 Korea Jeollab… NA <NA>
## 9 9 NA fema… 1992 Korea capital… NA <NA>
## 10 10 NA fema… 1966 Korea capital… NA <NA>
## # … with 7,744 more rows, and 10 more variables: exposure_start <chr>,
## # exposure_end <chr>, infection_reason <chr>, infection_order <dbl>,
## # infected_by <dbl>, contact_number <dbl>, confirmed_date <chr>,
## # released_date <chr>, deceased_date <chr>, state <chr>
| 변수 | 결측비율 |
|---|---|
| global_id | 0 |
| local_id | 1 |
| sex | 0.9126 |
| birth_year | 0.9142 |
| country | 0 |
| province | 0.9438 |
| disease | 0.9964 |
| group | 0.9889 |
| exposure_start | 0.9536 |
| exposure_end | 0.9536 |
| infection_reason | 0.9801 |
| infection_order | 0.9954 |
| infected_by | 0.991 |
| contact_number | 0.9932 |
| confirmed_date | 0 |
| released_date | 0.9929 |
| deceased_date | 0.9954 |
| state | 0 |
환자데이터셋의 경우 결측비율이 너무 많아 분석에서의 사용이 불가능해보임.(확진자수 급증에 따라 성별정보는 집계가 안 된 것으로 보임)
## # A tibble: 4,043 x 8
## global_id local_id start end type latitude longitude province
## <dbl> <chr> <chr> <chr> <chr> <dbl> <dbl> <chr>
## 1 200 busan_1 2/18/20 2/18/… school 35.2 129. Busan
## 2 200 busan_1 2/18/20 2/18/… <NA> NA NA <NA>
## 3 200 busan_1 2/18/20 2/18/… local_governme… 35.2 129. Busan
## 4 200 busan_1 2/19/20 2/19/… food 35.2 129. Busan
## 5 200 busan_1 2/19/20 2/19/… house NA NA <NA>
## 6 200 busan_1 2/19/20 2/19/… subway_station 35.2 129. Busan
## 7 200 busan_1 2/19/20 2/19/… church 35.2 129. Busan
## 8 200 busan_1 2/20/20 2/20/… house NA NA <NA>
## 9 200 busan_1 2/20/20 2/20/… transportation NA NA <NA>
## 10 200 busan_1 2/20/20 2/20/… food 35.2 129. Busan
## # … with 4,033 more rows
| 변수 | 결측비율 |
|---|---|
| global_id | 0.1828 |
| local_id | 0.7212 |
| start | 0.01237 |
| end | 0.01237 |
| type | 0.2743 |
| latitude | 0.4833 |
| longitude | 0.4833 |
| province | 0.484 |
동선 데이터셋의 경우 환자번호에 따라 지역정보인 province의 결측치 보정이 필요하며, 방문유형(type)이나, 지역번호(local_id)는 결측치 보정이 불가능함.
동선데이터의 경우 위경도, 지역정보 등의 추정은 어느정도 비슷한 지역에 머물럿을것이라 예측이 가능하지만, type, local_id 등의 변수는 추정이 불가능함. 확진자당 해당 요일에서 발생한 결측값을 보정하기 위하여, 요일당 방문지역에 대한 확률값을 계산하여 확률적으로 보정하였음.
long/lat 위경도 정보 또한 다중대체법(Multiple Imputation by chained equations)을 통하여 보정하였음.
KakaoAPI를 이용한 위경도별 행정구역 정보 수집 : 대상이 모호하여, 시도 정보만 수집하였음.
데이터는 전체 환자의 이동경로를 포함하고 있지 않기에, 이 결과를 통하여 단정지을 수 없음.
서울과 대구/경북 지역에 유난히 많은 활동량이 관측되었음.
shapefile 형식은 지리 정보에 널리 사용되는 지형 공간 벡터 데이터 형식이다. 흔히 말하는 GIS에 적합한 데이터형태이며, shapefile 형식은 예를 들어 우물, 강 및 호수를 나타내는 점, 선 및 다각형과 같은 벡터 기능을 공간적으로 설명한다. 이때, 각 항목에는 일반적으로 이름이나 온도로 표현하는 속성 정보가 포함되어 있습니다.
위 그림은 대한민국의 행정구역 경계(시도 기준)를 통하여 표현된 shapefile에 대한 시각화 정보임.
공개된 데이터셋 내에는 1월 말부터 3월 초까지의 환자가 방문한 지역에 대한 위치정보가 포함되어 있음.
3월초 급증한 코로나 환자수를 보아, 환진 판정을 받은 환자들이 코로나바이러스 잠재기간인 2월 중순 ~ 말 시점에 활발히 움직였기에, 위와 같은 결과가 도출되었음.
다소 결측값의 비율이 적은 서울시 코로나확진자 데이터셋을 이용하여 그들의 이동경로와 감염사유 등을 통하여 인사이트를 도출함. 서울시의 경우, 확진자의 동선이 역학조사를 통하여 다소 상세하게 기록되고 있음.
| 변수 | 결측비율 |
|---|---|
| local_id | 0 |
| global_id | 0.01418 |
| country | 0 |
| sex | 0 |
| birth_year | 0 |
| infection_reason | 0 |
| infected_by | 0.883 |
| travel_history | 0.8936 |
| confirmed_date | 0 |
| province | 0 |
| city | 0.01064 |
| 변수 | 결측비율 |
|---|---|
| global_id | 0.01949 |
| local_id | 0 |
| start | 0 |
| end | 0 |
| type | 0 |
| latitude | 0.5337 |
| longitude | 0.5337 |
| province | 0.5337 |
| city | 0.5337 |
| infected_by | count |
|---|---|
| NA | 249 |
| 6 | 4 |
| 780 | 3 |
| 794 | 2 |
| 6832 | 2 |
| 7923 | 2 |
| travel_history | count |
|---|---|
| NA | 252 |
| Singapore | 4 |
| Philippines | 3 |
| China (Wuhan) | 2 |
| France | 2 |
| Spain | 2 |
| local_id | global_id | country | sex | birth_year | infection_reason |
|---|---|---|---|---|---|
| 18 | 111 | Korea | male | 2000 | living in Daegu |
| 46 | 1246 | Korea | female | 1999 | Myungsung church |
| 123 | 7243 | Korea | female | 1941 | living in Daegu |
| confirmed_date | province | city |
|---|---|---|
| 2/20/20 | Daegu | NA |
| 2/25/20 | Gyeongsangbuk-do | NA |
| 3/8/20 | Daegu | NA |
아래의 사유를 8개 범주로 재범주화하여 진행함.
| infection_reason | category | count |
|---|---|---|
| Guro-gu call center | 구로구콜센터 | 57 |
| Overseas travel | 외부지역 | 33 |
| Under investigation | 조사중 | 33 |
| contact with call center employee | 확진자접촉 | 28 |
| contact with patient | 확진자접촉 | 23 |
| Dongdaemun-gu church & arcade | 종교활동발 | 20 |
| contact with patient from different provice | 확진자접촉 | 19 |
| Eunpyeong-gu St. Mary’s Hospital | 병원발 | 14 |
| Seongdong-gu residental complex management office | 성동구주상복합 | 13 |
| contact with patient (suspect) | 확진자접촉 | 10 |
| Dongdaemun-gu caregiver | 병원발 | 8 |
| Daegu visit | 외부지역 | 6 |
| a real estate agency | 기타 | 3 |
| contact with patient from Daegu | 확진자접촉 | 3 |
| construction site in Yeouido | 기타 | 2 |
| Shincheonji Church of Jesus (suspect) | 종교활동발 | 2 |
| Myungsung church | 종교활동발 | 1 |
| National Police Hospital | 병원발 | 1 |
| Seoul regenerative hospital | 병원발 | 1 |
| Shincheonji Daegu Church of Jesus | 종교활동발 | 1 |
| shopping mall | 기타 | 1 |
spline 결과 내 구간의 폭을 보았을 때, 30대 구간에서 여성에 비하여 남성의 확진자 수가 많고, 40-50대 여성의 환자 수가 많은 것을 확인할 수 있음.
8개 범주에 대한 확진자들의 감염사유는 위와 같이 확진자를 통한 접촉이 많고, 다음으로 집단감염 형태의 사유로 구성됨. 구로구콜센터, 병원발에서 여성의 성비가 높게 나오고, 이외에 요소에서 남성의 성비가 높게 나옴. 앞에서 구로구콜센터의 성비와 확인한 40-50대의 여성의 성비를 비교하였을 떄, 구로구 콜센터의 직원이 주로 40-50대의 여성일 것이라 추측 가능함.
일자별 확진자 수는 3월초 급증하다가, 다소 감소한 추세를 보이고 있음.
확진자들은 중랑구, 금천구, 서대문구, 서초구 순으로 거주자가 많음.
행정구별 확진자 활동량을 확인하기 위하여 지도상 시각화
단변량 자료인 확진자 수 데이터를 이용하여, 향후 코로나 확진자 수를 예측하기 위하여 이전 시점의 관측값을 설명변수로 하는 단변량 LSTM 모델을 구축함. 미래 시점에 대해서는, 이전 시점에 예측된 관측치를 설명변수로 하였고, 학습된 데이터셋이 다소 적은 관측치를 가지고, 단조증가하는 구조로 예측에 적합하지 않는 데이터셋일 수 있음.(다소 적은 관측치로 인하여 부정확한 결과가 도래될 수 있음)
LSTM은 RNN의 특별한 한 종류로, 긴 의존 기간을 필요로 하는 학습을 수행할 능력을 갖고 있다. LSTM은 Hochreiter & Schmidhuber (1997)에 의해 소개되었고, 그 후에 여러 추후 연구로 계속 발전하고 유명해졌다. LSTM은 여러 분야의 문제를 굉장히 잘 해결했고, 지금도 널리 사용되고 있다. 핵심으로 RNN 구조는 다음 단계를 예측하는 데 있어서, 이전 정보를 활용한다. 하지만 다소 긴 이전 시점의 자료들이 가지는 정보가 잘 잊혀지는 문제가 있다. 이 문제점을 LSTM은 셀상태와 3개의 게이트를 가지는 구조로 시퀀스상 멀리 있는 요소들이 가지는 정보를 잘 전달할 수 있게 하였음.
셀상태는 기존 신경망의 은닉층이라고 생각할 수 있음.
게이트 : 가중치(weight)를 가진 은닉층으로 생각할 수 있으며, 각 가중치는 sigmoid층에서 계산되어 0과 1사이의 값을 가짐.
예측결과를 보았을 때, LSTM 모형의 학습자료가 지속적으로 증가하는 형태를 띄었기에, 예측결과 또한 꾸준히 증가하여 한달 후 약 15000명의 확진자까지로 증가하는 추세를 보임.
사망률이 지속적으로 증가하고 있는 점과, 확진자 수의 증가하는 추세가 다소 수그러 들었음에도 이대로 가다가는 정말 위험할 수 있다.
코로나 확진자 수 감소를 위하여 사회적 거리두기 및 2주간 잠시 멈춤에 적극 동참합시다!